package com.tensai.study.java.opensource.hutool;

import cn.hutool.core.io.checksum.crc16.CRC16Modbus;
import cn.hutool.core.util.HexUtil;
import org.junit.Test;

/**
 * Modbus CRC校验生成
 *
 * @author Tensai
 */
public class CRC16ModbusTest {


	/**
	 * 注意Hutool版本
	 * 低版本可能会导致 位数不足四位在后面补0
	 * 应当前置补0
	 * 新版本已经解决这个bug了
	 */
	@Test
	public void getHexValueTest() {
		//740A
		String code = "010300030001";
		byte[] command = HexUtil.decodeHex(code);
		CRC16Modbus crc16Modbus = new CRC16Modbus();
		crc16Modbus.reset();
		crc16Modbus.update(command);
		String re = crc16Modbus.getHexValue(true);
//		crc16Modbus.getHexValue()
		System.out.println(re);

		long r = crc16Modbus.getValue();
		System.out.println(r);
	}

	/**
	 * modbus指令追加CRC
	 */
	@Test
	public void test() {
		String crc = "0A74";
		char[] crcs = crc.toCharArray();
		String code = "010300030001";
		code += crcs[2];
		code += crcs[3];
		code += crcs[0];
		code += crcs[1];
		System.out.println(code);
	}
}
